FIG. 1 is a block diagram of a computing cluster 100. The cluster 100 includes four host computers 110, 120, 130, and 140. The host computers may each be referred to as a host or as a node. Each host in the cluster 100 may include one or more central processing units (CPUs) supported by internal memory and software for performing calculations. In various situations, a series of calculations may be performed on a large amount of data. For example, a compilation of business transactions, such as credit-card, point-of-sale, or banking transactions may need to be applied to a series of accounts or may need to be processed to generate billing statements. Similarly, a series of calculations may need to be performed in parallel for physical, chemical, or biological research. To reduce the overall time of performing the calculation, the data may be subdivided into two or more data partitions, and each data partition may then be processed by a dedicated host. The hosts may thus work in parallel to reduce the overall computation time for processing the data.
As illustrated in FIG. 1, the four hosts 110, 120, 130, and 140 are connected to each other. The connections may be made through dedicated links or through a network, such as a local area network (LAN). Each host is also connected with a data server dedicated to the host. In the illustrated example, host 110 is connected with a data server 112; host 120 is connected with a data server 122; host 130 is connected with a data server 132; and host 140 is connected with a data server 142. This configuration may be described as a “share-nothing” architecture, since host computers in this configuration do not share memory or data servers. The data servers each provide data to only one data-processing host. Each data partition is thus associated with one host computer.
A computing cluster may also use larger numbers of host computers. In general, larger clusters may more quickly process data, since the data to be processed can be spread among a greater number of hosts. However, various scalability issues may arise as the number of hosts is increased.